// axios的请求拦截器和响应拦截器配置
import axios from "axios";
// 导入vuex
import $store from "../store/index";
// 请求的基本路径
const baseURL = "http://localhost:3000";
let ajaxTimer = 0;
// config ---axios的配置项 如url method  data params
export function request(config) {
  // 进入请求就加载loading效果
  $store.commit("showLoading");
  const sevice = axios.create({
    baseURL: baseURL,
    timeout: 5000,
  });
  // 配置请求拦截器
  sevice.interceptors.request.use(
    (data) => {
      ajaxTimer++;
      return data;
    },
    (err) => {
      $store.commit("hiddenLoading");
      return err;
    }
  );
  // 配置响应拦截器
  sevice.interceptors.response.use(
    (data) => {
      ajaxTimer--;
      // 返回数据隐藏loading
      if (ajaxTimer == 0) {
        $store.commit("hiddenLoading");
      }
      return data;
    },
    (err) => {
      $store.commit("hiddenLoading");
      throw err;
      return err;
    }
  );
  return sevice(config);
}
